Roadmap規劃


Posted by Castella on 2023-11-18

沒甚麼用的前言

單純的學習知識是一件有趣的事情,但是一個人的生命跟時間是有限的,知識則是由整個領域的人不斷學習、研究來推進更新的。要以個人之力去理解過去所有的知識、經驗是極度困難的,而且也沒有必要。我認為更重要的是我學到的知識是否能讓我做出新的成果、幫助整個領域、產業更進一步,但這並不是需要全盤了解前人的經驗才可以做的事。

數學的思想就是在鑽研事物的本質、歸納抽象化的結構,循著這樣子思想訓練出來的人在學習新的知識時可以毫不猶豫、自然地去探討問題的根基、本質,進而去欣賞它的困難與美從中發掘樂趣。不畏困難的探究精神是數學系學生的優點但同時也是缺點,研究一個問題有很多面向,並不是只有窮究它的本質與抽象化的結構並寫下完整、漂亮的證明這一條路。沒有那麼嚴謹的應用導向研究與工作對於整個領域也同樣重要。

過度鑽研遇到的每個問題會讓時間都被學習基層的東西吃掉,而它們不一定都能幫助自己學習、創造新的東西,反而很多時候是在重複前人走過的路。這會導致自學沒有效率,為了防止這樣問題,規劃一個Roadmap是很重要的。

事前準備

領域選擇

軟體工程師的領域跟數學家的一樣有非常多種,其中有相關性比較高的,也有像Fourier Analysis跟Algebraic Geometry一樣差異不小的,對不同的領域進行大致的調查,挑除確定不適合我入門的領域、整理剩下的選擇共同需要的能力是我第一件做的事。經過調查後選出了以下幾個候選:

  • Machine Learning/ Deep Learning (ML/DL)
  • Data Science
  • Backend/Full-stack (Web)

ML/DL是我第一個想到的,這也非常自然,因為近年來AI的發展快速、應用多元,看上去也有很多數學可以發揮的空間,我過去也有上過相關的理論課,算有粗淺的了解。但是根據諮詢、調查的結果是:在台灣這是一個人才相當飽和的領域,而實務上找到一個適當的特徵相對起開發更新的理論與演算法報酬率更高,數學能力沒有辦法提供太多優勢。沒有相關作品、比賽經歷、發表過頂級會議論文是找不到太好的工作的,而那些對於自學者不容易準備的。

Data Science的情況跟ML/DL很像,畢竟這兩個領域也很難分開討論。

再來是Web開發跟應用,這是在台灣比較主流的軟體工作,坊間的bootscamp、網路教學心得文大多是這個方向。由於社群廣大,我認為這是比較容易開始的地方。如果是這個方向的話我的數學知識就沒有任何幫助了,但也正好可以讓我不受限於數學的思維,專注於資料庫、作業系統等CS基礎知識,培養軟體工程師的素養跟思維。資料庫的設計、操作我也覺得蠻有趣的,同時增加對資料的理解也有助於其他幾個我有興趣的領域。總結來說因為

  1. 學習資源多,工作機會相對多
  2. 能培養基礎知識,鍛鍊軟體工程師的思維
  3. 有趣
    所以將它當成我的主要方向。

路線規劃

基本上是照著這裡的提供的roadmaps中Python跟Backend的roadmap走,再依照興趣跟情況做調整。學習的東西我分為兩類,分別是

  1. 知識(Knowledge):學校中會學到的理論知識,比如OOP(object-oriented programming), DSA(data structure and algorithm), database design, OS(operating system)
  2. 技能(Skills):操作工具的能力,比如programming language, SQL syntax, shell, IDE, git

這兩個不是互斥的,而是相輔相成。由於是自學的關係,我決定在維持一定程度的知識學習之下以技能為主的學習,這能讓我更快的看到整體的架構而不會花太多時間在鑽研細節上。

秉持這個理念,我的程式語言選擇是Python為主,在部分時候使用C/C++,並先弄出一個作品再進行知識的補強。選擇Python的理由除了學習快速外還有它是資料科學、機器學習的熱門語言。

結尾

其實這篇從起了初稿到發布隔了很久,一直刪掉重打,覺得不能再拖了就草草將內容打一打發布了。


#自學







Related Posts

橢圓軌道上行星到太陽平均距離

橢圓軌道上行星到太陽平均距離

javascript 運算與基礎function

javascript 運算與基礎function

[React 01] 環境建置

[React 01] 環境建置


Comments